package exception;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * JDK7之后,java提供了一个新的特性:自动关闭.旨在IO操作中可以更简洁的使用异常处理机制
 * 完成最后的close操作.
 * 语法:
 * try(
 * 定义需要在finally中调用close方法关闭的对象
 * )}
 * IO操作
 * }
 * catch(XXXException e)}
 * ...
 * }
 * 上述语法中可以在try的"()"中定义的并初始化的对象必须实现了java.io.AutoCloseableDemo
 * 否则便衣不通过.
 */
public class AutocloseableDemo {
    public AutocloseableDemo() throws FileNotFoundException {
    }

    public static void main(String[] args) {

    try(
            FileOutputStream fos=new FileOutputStream("fos.dat");
            ){
        try {
            fos.write(1);
        } catch (IOException e) {
            e.printStackTrace();//向控制台输出当前异常的错误信息
        }
        /*
        上述代码是编译器认可的,而不是虚拟机.编译器在编译上述代码后会在编译后de
        class文件中改回成FinallyDemo2
         */
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }
}